package com.sure.common.datatype;

import org.apache.log4j.Logger;

import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @Desc  Java数据类型 
 * @Author Sure
 * @Date 2014年12月24日 下午9:33:21
 */
public class JavaType {

	/**
	 * @Desc 日志记录
	 * @Author Sure
	 */
	private static final Logger logger = Logger.getLogger(JavaType.class);
	
	public static final String STRING = "java.lang.String";
	public static final String BIG_DECIMAL="java.math.BigDecimal";
	public static final String BOOLEAN="java.lang.Boolean";
	public static final String INTEGER="java.lang.Integer";
	public static final String LONG="java.lang.Long";
	public static final String FLOAT="java.lang.Float";
	public static final String DOUBLE="java.lang.Double";
	public static final String BYTE_ARRAY="[B";
	public static final String DATE="java.util.Date";
	public static final String DATESQL="java.sql.Date";
	public static final String TIME="java.sql.Time";
	public static final String TIMESTAMP="java.sql.Timestamp";
	
	
	/**
	 * @Desc 根据Java类型调用ResultSet的不同方法返回结果
	 * @Author Sure
	 * @Date 2014年12月28日 下午12:40:26
	 * @param pair Java DB 类型对
	 * @param rs 查询结果集
	 * @return 查询结果
	 * @throws SQLException 
	 */
	public static Object getResult(MatchType pair, ResultSet rs, String dbColName) throws SQLException {
		if(STRING.equals(pair.getJavaType())) {
			logger.info("调用rs.getString()");
			return rs.getString(dbColName);
		}
		if(BIG_DECIMAL.equals(pair.getJavaType())) {
			logger.info("调用rs.getBigDecimal()");
			return rs.getBigDecimal(dbColName);
		}
		if(BOOLEAN.equals(pair.getJavaType())) {
			logger.info("调用rs.getBoolean()");
			return rs.getBoolean(dbColName);
		}
		if(INTEGER.equals(pair.getJavaType())) {
			logger.info("调用rs.getInt()");
			return rs.getInt(dbColName);
		}
		if(LONG.equals(pair.getJavaType())) {
			logger.info("调用rs.getLong()");
			return rs.getLong(dbColName);
		}
		if(FLOAT.equals(pair.getJavaType())) {
			logger.info("调用rs.getFloat()");
			return rs.getFloat(dbColName);
		}
		if(DOUBLE.equals(pair.getJavaType())) {
			logger.info("调用rs.getDouble()");
			return rs.getDouble(dbColName);
		}
		if(BYTE_ARRAY.equals(pair.getJavaType())) {
			logger.info("调用rs.getBytes()");
			return rs.getBytes(dbColName);
		}
		if(DATE.equals(pair.getJavaType())) {
			logger.info("调用rs.getDate()");
			return rs.getDate(dbColName);
		}
		if(DATESQL.equals(pair.getJavaType())) {
			logger.info("调用rs.getDate()");
			return rs.getDate(dbColName);
		}
		if(TIME.equals(pair.getJavaType())) {
			logger.info("调用rs.getTime()");
			return rs.getTime(dbColName);
		}
		if(TIMESTAMP.equals(pair.getJavaType())) {
			logger.info("调用rs.getTimestamp()");
			return rs.getTimestamp(dbColName);
		} else {
			logger.info("没有此Java类型【"+pair.getJavaType()+"】");
			return null;
		}
		
	}

}
